# 列表

# # 常见的列表操作
# 1.添加元素：append()、insert()、extend()
# li = ['one', 'two', 'three', 'four']
# li.append('five')  # 在列表末尾添加元素
# li.insert(2, 'two')  # 在索引为2的位置插入元素
# li.extend(['six', 'seven'])  # 将列表添加到列表末尾
# print(li)

# 2.修改元素：直接通过索引修改元素的值
# li = [1, 2, 3, 4, 5]
# li[2] = 10  # 修改索引为2的元素的值
# print(li)

# 3.查找元素
# in：判断元素是否存在于列表中，返回布尔值
# not in：判断元素是否不存在于列表中，返回布尔值
li = ['a', 'b', 'c', 'd', 'e']
print('c' in li)  # True
print('f' not in li)  # True

# 练习题
# 用户输入昵称，昵称重复不能使用
# 定义一个列表，保存已存在的昵称
name_list = ['Tom', 'Jerry', 'Mary']
# while True:
#     name = input('请输入昵称：')
#     if name in name_list:  # 判断昵称是否已存在
#         print('昵称已存在，请重新输入！')
#     else:
#         print('昵称添加成功！')
#         name_list.append(name)  # 添加昵称到列表中
#         print(name_list)
#         break  # 添加成功后退出循环
# print(name_list.index('Mary'))
# print(name_list.count('Mary'))

# 4.删除元素：pop()、remove()、del
# # del：删除指定索引的元素
# # li = [1, 2, 3, 4, 5]
# # del li  # 删除整个列表
# # del li[2]  # 删除索引为2的元素
# # print(li)
#
# # pop()：删除指定索引的元素，python3版本默认删除列表末尾的元素，并返回该元素的值
# li = [1, 2, 3, 4, 5]
# li.pop()  # 删除列表末尾的元素
# li.pop(2)  # 不能指定元素删除，只能根据索引删除，下标不能超出范围
# print(li)
#
# # remove()：删除指定元素，如果元素不存在，则抛出ValueError异常
# li = [1, 2, 3, 4, 5]
# li.remove(3)  # 删除值为3的元素
# print(li)


# 3.修改元素：、index()、count()
# 4.切片：切片操作可以从列表中提取一部分元素，并生成一个新的列表。

# 排序sort()、reverse()
# sort():对列表进行排序，默认升序
# li = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# li.sort()
# print(li)
# # reverse():对列表进行反向排序
# li.reverse()
# print(li)


# 列表推导式
# 格式一：
# li = [1, 2, 3, 4, 5]
# [print(i*5) for i in li]
# lli = []
# for i in range(1, 6):
#     lli.append(i)
# print(lli)
# 格式二：
li=[]
for i in range(1, 6):
    if i%2 == 0:
        li.append(i)
print(li)
# 等于
[li.append(i*5) for i in range(1, 6) if i%2==0]
print(li)

